#ifndef INCLUDE_PERSON_H
#define INCLUDE_PERSON_H

#include <list>
#include "GlobalStructure.h"

enum PersonPurpose
{
    PurposeStay = 0,
    PurposeGoToToilet,
    PurposeLeave,
    PurposeGoToTable,
    PurposeMax
};

class Person
{
public:
    Person( const int nId, const Position& refOriPos );
    virtual ~Person();

    void MoveBack();
    void MoveForth();
    void Action( const int nAction );
    bool StepMove();
    bool IsActionDone();

    Position& GetLatestPos();
    Velocity& GetLatestVelocity();

    Position& GetCurPos();
    Velocity& GetCurVelocity();

private:
    int m_nId;
    int m_nStoppingTimes;
    Position m_stCurPos;
    Velocity m_stCurVel;
    const Position m_stOriPos;
    std::list<Position> m_lstPath;
};

#endif